//1.引入mongoose模块
var mongoose = require('mongoose');
/**
 * 2.创建mongoose的链接
 * 参数1：本地数据的地址 f82
 * 参数2：数据库的参数
 * 参数3：回调函数   错误优先
*/
mongoose.connect('mongodb://localhost:27017/f82',{},(e)=>{
    if(e){
        console.log(e);
        console.log("连接失败");
        return;
    }
    console.log("链接成功");
});
/**
 * 3.创建Schema
 * 作用就是把数据映射到数据的表中的每一个字段上
 */
//创建学生的数据结构（结构中存入的数据的名字必须与表中的字段名一样）
var studentSchema = mongoose.Schema({
    name: String,
    age:Number,
    gender:String,
    address:String,
    del:String,
});

//4.创建一个学生的数据模型
//作用:模型中提供了对数据的增删改查的方法

/**
 * 参数1：自取的数据模型的名字
 * 参数2：对应的数据模型
 * 参数3：数据库中表的名字
 */
 var studentModel = mongoose.model('studentModel', studentSchema,"student1");

//  let result =studentModel.find().exec();
//  result.then((data)=>{
// console.log(data);
//  })


//查看名字叫张三的同学
//  let result =studentModel.find({name:"张三"}).exec();
//  result.then((data)=>{
// console.log(data);
//  })
//如果查询的数据只有一条时可以使用用findOne();
//参数1：查询的条件
// let result =studentModel.findOne({name:"张三"}).exec();
// result.then((data)=>{
// console.log(data);
// })

//根据id查询学生的信息 (推荐使用)
//参数1 id的值
// let result =studentModel.findById("62ea523c0ab6793123e8ab09").exec();
// result.then((data)=>{
// console.log(data);
// })

//查询家的成都的男同学
//  let result =studentModel.find({address:"三台县",gender:"男"}).exec();
//  result.then((data)=>{
// console.log(data);
//  })

 //查询年龄大于20岁的
//  let result =studentModel.find({age:{$gt:"20"}}).exec();
//  result.then((data)=>{
// console.log(data);
//  })

  //查询年龄大于等于20岁的
//   let result =studentModel.find({age:{$gte:20}}).exec();
//   result.then((data)=>{
//  console.log(data);
//   })

 //查询年龄小于20岁的
//  let result =studentModel.find({age:{$lt:"20"}}).exec();
//  result.then((data)=>{
// console.log(data);
//  })

   //查询年龄小于等于20岁的
//    let result =studentModel.find({age:{$lte:20}}).exec();
//    result.then((data)=>{
//   console.log(data);
//    })

// //查询18-20岁之间的人
//    let result =studentModel.find({age:{$gte:18,$lte:20}}).exec();
//    result.then((data)=>{
//   console.log(data);
//    })

//查询姓张的人

//    let result =studentModel.find({name:/^张/ig}).exec();
//    result.then((data)=>{
//   console.log(data);
//    })

//    //查询包含张的人 i 忽略大小写 g 全局

//    let result =studentModel.find({name:/张/ig}).exec();
//    result.then((data)=>{
//   console.log(data);
//    })

   //查询结尾姓张的人
//    let result =studentModel.find({name:/张$/ig}).exec();
//    result.then((data)=>{
//   console.log(data);
//    })


//排序 sort() 
/**
 * sort(条件json) 也可以多个排序
 * 做排序 会线比较第一个排序列，当第一个列的相同时，在进行第二列的排序
 * asc或则1：升序 从小到大
 * desc或则-1 降序 从大到小
 */
//查询年龄18-21岁德人

let result =studentModel.find({age:{$gte:18,$lte:21}}).sort({age:1,gender:1}).exec();
result.then((data)=>{
console.log(data);
})



